#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
using LL = long long;
const int maxn = 1005, INF = 0x3f3f3f3f;
LL g[maxn], f[5][maxn];
int mod;
void init(){
g[0] = 1;
for(int i = 1; i < maxn; i++)
for(int j = i; j < maxn; j++)
g[j] = (g[j] + g[j - i]) % mod;
f[0][0] = 1;
for(int i = 1; i <= 4; i++){
for(int j = 0; j < maxn; j++)
for(int k = 0; j + k < maxn; k++)
f[i][j + k] = (f[i][j + k] + f[i - 1][j] * g[k]) % mod;
}
}
int main(){
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
int T, op;
cin >> T >> op;
if (op == 1){
while(T--){
int n;
cin >> n;
int ans = INF, h;
for(int i = 1; i <= n; i++){
int j = (n + i - 1) / i;
if (i + j < ans){
ans = i + j;
h = i;
}
}
vector<string> s(h);
int w = (n + h - 1) / h;
for(int i = 0, k = 0; i < h; i++){
s[i].resize(w);
for(int j = 0; j < w; j++){
if (++k > n) s[i][j] = '.';
else s[i][j] = '#';
}
}
cout << h << ' ' << w << '\n';
for(auto &x : s) cout << x << '\n';
}
}
else{
cin >> mod;
init();
while(T--){
int n;
cin >> n;
int ans = INF;
vector<int> cand;
for(int i = 1; i <= n; i++){
int j = (n + i - 1) / i;
if (i > j) break;
if (i + j < ans){
ans = i + j;
cand = {i};
}
else if (i + j == ans) cand.push_back(i);
}
LL cnt = 0;
for(auto h : cand){
int w = (n + h - 1) / h;
int delta = w * h - n;
if (w == h) cnt = (cnt + f[4][delta]) % mod;
else cnt = (cnt + 2 * f[4][delta]) % mod;
}
cout << ans * 2 << ' ' << cnt << '\n';
}
}
}
1271A - Suits | 259B - Little Elephant and Magic Square |
1389A - LCM Problem | 778A - String Game |
1382A - Common Subsequence | 1512D - Corrupted Array |
667B - Coat of Anticubism | 284B - Cows and Poker Game |
1666D - Deletive Editing | 1433D - Districts Connection |
2B - The least round way | 1324A - Yet Another Tetris Problem |
246B - Increase and Decrease | 22E - Scheme |
1566A - Median Maximization | 1278A - Shuffle Hashing |
1666F - Fancy Stack | 1354A - Alarm Clock |
1543B - Customising the Track | 1337A - Ichihime and Triangle |
1366A - Shovels and Swords | 919A - Supermarket |
630C - Lucky Numbers | 1208B - Uniqueness |
1384A - Common Prefixes | 371A - K-Periodic Array |
1542A - Odd Set | 1567B - MEXor Mixup |
669A - Little Artem and Presents | 691B - s-palindrome |